/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package es.revuel.tpvonce.modelo.dao;

import es.revuel.tpvonce.modelo.vo.FamiliaVO;
import es.revuel.util.database.UtilidadesBDMySQL;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Usuario
 */
public class FamiliaDAO {
    
    private UtilidadesBDMySQL utilidadesMySQL;
   
    /**
     * 
     */
    public FamiliaDAO(){
        this.utilidadesMySQL = new UtilidadesBDMySQL();
    }
    
    /**
     * Inserta una familia o modifica sus valores
     * @param familia
     * @return 
     */
    public int insertarFamilia(FamiliaVO familia){
        String sql = "INSERT INTO familia (identificador,descripcion,margen)VALUES ('"+familia.getIdentificador()+"','"+familia.getDescripcion()+"',"+familia.getMargen()+");";
        System.out.println(sql);
        return utilidadesMySQL.realizarInsert(sql);
    }
    
    /**
     * 
     * @param idfamilia
     * @return 
     */
    public FamiliaVO recuperarFamiliaId(int idfamilia){
        FamiliaVO familia = null;
        
        String sql = "select * from familia where "+FamiliaVO.ID_FAMILIA_INT+"="+idfamilia;
        ResultSet rs = utilidadesMySQL.realizarConsulta(sql);
        try {   
            while (rs.next()){
                familia = new FamiliaVO(rs.getInt(FamiliaVO.ID_FAMILIA_INT),rs.getString(FamiliaVO.IDENTIFICADOR_STR), rs.getString(FamiliaVO.DESCRIPCION_STR), rs.getFloat(FamiliaVO.MARGEN_FLT));   
            }
            
        } catch (SQLException ex) {
            Logger.getLogger(FamiliaDAO.class.getName()).log(Level.SEVERE, null, ex);
            utilidadesMySQL.cerrarConexion();
        }       
       
        return familia;
    }
    
    /**
     * 
     * @param familia
     * @return 
     */
    public List<FamiliaVO> buscarFamilias(FamiliaVO familia){
        List<FamiliaVO> listaFamilias = new ArrayList<FamiliaVO>();
        
        String sql= "select * from familia where";
        if (familia!=null){
            if(familia.getIdFamilia()!=null){
                sql+= familia.ID_FAMILIA_INT +"="+familia.getIdFamilia();
            }
            if(familia.getIdentificador()!=null){
                sql+= familia.IDENTIFICADOR_STR +"="+familia.getIdentificador();
            }
            if(familia.getDescripcion()!=null){
                sql+= familia.DESCRIPCION_STR +"="+familia.getDescripcion();
            }
            if(familia.getMargen()!=null){
                sql+= familia.MARGEN_FLT +"="+familia.getMargen();
            }
        }
        sql+=" borrado='0'";
        ResultSet rs = utilidadesMySQL.realizarConsulta(sql);
        
        try {   

            while (rs.next()){
                FamiliaVO fm= null;
                fm = new FamiliaVO(rs.getInt(FamiliaVO.ID_FAMILIA_INT),rs.getString(FamiliaVO.IDENTIFICADOR_STR), rs.getString(FamiliaVO.DESCRIPCION_STR), rs.getFloat(FamiliaVO.MARGEN_FLT));   
                listaFamilias.add(fm);
            }
            
        } catch (SQLException ex) {
            Logger.getLogger(FamiliaDAO.class.getName()).log(Level.SEVERE, null, ex);
            utilidadesMySQL.cerrarConexion();
        }       
        return listaFamilias;
    }
    
    /**
     * 
     * @return List<FamiliaVO>
     */
    public List<FamiliaVO> listarFamilias (){
        return buscarFamilias(null);
    }
    
    
    
    public void eliminarFamilia(FamiliaVO familia){
     
        String sql ="UPDATE  familia SET borrado='1' WHERE id_familia = "+familia.getIdFamilia();
        utilidadesMySQL.realizarInsert(sql);
    }
           
}
